const  Promise = require('./promise')
Promise.resolve().then(() => {  // p1
    console.log(0);
    // 在es6中 语法上规定如果返回的是一个promise，我需要让这个promise放到下一次微任务才会执行
    return new Promise((resolve)=>{ // a->promise
        resolve('a');
    }) // x.then()   内部会判断x的类型如果是promise 会在then一次
}).then(res => {
    console.log(res)
})
Promise.resolve().then(() => {
    console.log(1); // 1
}).then(() => {
    console.log(2);
}).then(() => {
    console.log(3);
}).then(() => {
    console.log(4);
}).then(() => {
    console.log(5);
})
// 微任务执行的顺序 [a,3]
// 0  1 2 a 3  4 5 
// 如果一个promise 返回了一个promise （这个返回的任务会被解析出2个微任务） 一个是语法层面的，一个是promise需要.then拿到最终的结果